#选择编译工具链
CROSS_COMPILE = arm-none-eabi-
CC	:= $(CROSS_COMPILE)gcc
CXX	:= $(CROSS_COMPILE)g++
AS	:= $(CROSS_COMPILE)as
AR	:= $(CROSS_COMPILE)ar
LD	:= $(CROSS_COMPILE)ld
OBJCOPY :=$(CROSS_COMPILE)objcopy
OBJDUMP	:=$(CROSS_COMPILE)objdump
SIZE	:=$(CROSS_COMPILE)size

#添加头文件路径
CFLAGS += -I./cortex_m3/startup/inc 
CFLAGS += -I./cortex_m3/stm32_driverlib/inc 
CFLAGS += -I./user/inc 
CFLAGS += -I./rtos/inc 


#添加C文件源码
SRCS = $(wildcard cortex_m3/startup/src/*.c)
SRCS +=$(wildcard cortex_m3/stm32_driverlib/src/*.c)
SRCS +=$(wildcard user/src/*.c)
SRCS +=$(wildcard rtos/src/*.c)
SRCS +=$(wildcard rtos/src/*.s)
SRCS +=$(wildcard cortex_m3/startup/src/*.s)

#选择生成的目标
projectname = fingertechtools
#输出文件夹
outdir :=output

#使用自己定义的printf函数,如果需要使用其他的数学库使用nano库

#添加编译选项
#CFLAGS += -Wall -O2 -Wno-missing-braces -std=gnu99  -mthumb -mcpu=cortex-m3 -mfloat-abi=soft -D__NO_SYSTEM_INIT -lnosys --specs=nano.specs -ffunction-sections -fdata-sections  
CFLAGS += -Wall -O0 -g -Wno-missing-braces -std=gnu99  -mthumb -mcpu=cortex-m3 -mfloat-abi=soft -D__NO_SYSTEM_INIT -lnosys --specs=nano.specs -ffunction-sections -fdata-sections  
#链接选项
#LDFLAGS = -nostartfiles -Wl,--gc-sections,-Map=$(outdir)/$(projectname).map,-cref -mcpu=cortex-m3 -march=armv7-m  -Tstm32f2xx.ld
LDFLAGS = -nostartfiles -Wl,--gc-sections,-Map=$(outdir)/$(projectname).map,-cref -mcpu=cortex-m3 -march=armv7-m  -Tstm32f2_flash.ld

#隐式表达室
OBJS := $(SRCS:.c=.o)
OBJS := $(OBJS:.s=.o)
#添加编译输出路径
OBJS := $(addprefix $(outdir)/,$(OBJS))

#生成目标
all: $(outdir)/$(projectname).bin

#生成bin
$(outdir)/$(projectname).bin:$(outdir)/$(projectname).elf
	$(OBJCOPY) -O binary $^ $@

#生成elf文件
$(outdir)/$(projectname).elf:$(OBJS)
	$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
#将.c编译为.s
$(outdir)/%.o: %.c
	mkdir -p $(dir $@)
	$(CC) -c $(CFLAGS) -o $@ $^
#将.c编译为.s
$(outdir)/%.o: %.s
	$(CC) -c $(CFLAGS) -o $@ $^

$(outdir):
	mkdir -p $@

#删除文件
clean:
	-rm -rf $(outdir) 

#下载到mcu中	
download:
	echo "si 1" >> jlinkcmd #选择swd端口
	echo "speed 4000" >>jlinkcmd #设置速度
	echo "device STM32F205RE" >> jlinkcmd #选择mcu型号
	echo "r" >> jlinkcmd #重新复位
	echo "h" >> jlinkcmd #挂起目标
	#echo "erase" >> jlinkcmd #全部擦除flash
	echo "loadfile $(outdir)/$(projectname).bin 0x08000000" >> jlinkcmd #烧录
	echo "g" >> jlinkcmd #运行
	echo "qc" >> jlinkcmd #退出
	JLinkExe -CommanderScript jlinkcmd
	rm jlinkcmd

	
